import $http from '@/api/request.js'
// 按需引入消息提示组件，因为在vuex仓库中，访问不到this.$message
import { Message } from 'element-ui'

const getDefaultState = () => {
  return {
    // 商品分类
    category: [],
    // 一级分类信息
    category1List: [],
    // 二级分类信息
    category2List: [],
    // 三级分类信息
    category3List: [],
    // 根据三级分类cat_id获取到的商品数据
    goodsList: []
  }
}

const state = getDefaultState()

const mutations = {
  // 获取商品一级分类数据
  async getCategory1List(state) {
    const res = await $http({ url: '/api/public/v1/admin/getcategory1', method: 'get' })
    if (res.meta.status !== 200) return Message.error('获取商品一级分类数据失败')
    state.category1List = res.message.category1List
  },
  // 获取商品二级分类数据
  async getCategory2List(state, category1Id) {
    const res = await $http({ url: `/api/public/v1/admin/getcategory2?cat_pid=${category1Id}`, method: 'get' })
    if (res.meta.status !== 200) return Message.error('获取商品二级分类数据失败')
    state.category2List = res.message.category2List
  },
  // 获取商品三级分类数据
  async getCategory3List(state, category2Id) {
    const res = await $http({ url: `/api/public/v1/admin/getcategory3?cat_pid=${category2Id}`, method: 'get' })
    if (res.meta.status !== 200) return Message.error('获取商品三级分类数据失败')
    state.category3List = res.message.category3List
  },
  // 根据三级分类cat_id获取商品数据
  async getGoodsList(state, category3Id) {
    const res = await $http({ url: `/api/public/v1/admin/getgoodslist?cat_id=${category3Id}`, method: 'get' })
    if (res.meta.status !== 200) return Message.error('获取商品数据失败')
    state.goodsList = res.message.goodsList
  },
  // 清除商品数据
  clearGoodsList(state) {
    state.goodsList = []
  },
  // 清除二级商品分类数据
  clearCategory2List(state) {
    state.category2List = []
  },
  // 清除三级商品分类数据
  clearCategory3List(state) {
    state.category3List = []
  },
  // 获取商品分类信息
  async getCategory(state) {
    const res = await $http({ url: '/api/public/v1/categories', method: 'get' })
    if (res.meta.status !== 200) return Message.error('获取商品分类信息失败')
    state.category = res.message
  }
}

const actions = {}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}
